#!/usr/bin/env python

import argparse
import os
import json
from scanerUtils import ScanerUtils

# 解析参数
parser = argparse.ArgumentParser(description='扫描Swift文件并记录Framework信息')
parser.add_argument('-project', metavar='<project文件夹>', type=str, help='指定项目文件夹', required=True)
parser.add_argument('-skip_folders', metavar='<文件夹1 文件夹2 ...>', type=str, nargs='+', help='指定要跳过的文件夹数组', default=[])
parser.add_argument('-o', metavar='<输出路径>', type=str, help='指定输出路径，默认为 frameworks.json', default='frameworks.json')
args = parser.parse_args()

# 检查必要参数
if not os.path.isdir(args.project):
    print('项目文件夹不存在')
    exit(1)

default_ignore_folder = [".git", "Carthage"]
swift_files = ScanerUtils().find_swift_folders(args.project, default_ignore_folder + args.skip_folders)

frameworksSet = set()
for swift_file in swift_files:
    frameworksSet.update(ScanerUtils.scanSwiftFile(swift_file))

framework_list = sorted(list(frameworksSet))

# 生成JSON文件
data = {'frameworks': framework_list}
json_data = json.dumps(data, indent=4)

# 写入JSON文件
with open(args.o, 'w') as f:
    f.write(json_data)

print(f'已将Framework信息写入 {args.o} 文件')